//用于定义班级管理左边菜单的基类的store
Ext.define('classesLeftTreeStore', {
    extend: 'Ext.data.TreeStore',
    model: 'TreeModel',
    proxy: {
        type: 'ajax',
        reader: {
            type: 'json'
        },
        extractResponseData: function (response) {
            var textField = this.textField;
            var data = response.responseJson;
            Ext.each(data, function (record) {
                record.text = record[textField];// 将后台传来的对应字段的值赋给菜单的text字段
                if (record.childrenCount == 0)// 如果这个节点的可显示节点数量等于0则将此文件夹设置为不可展开
                    record.expandable = false;
            });
            return data;
        }
    },
    constructor: function () {
        this.callParent(arguments); // 调用父类的构造函数,不然会报错
        this.proxy.url = arguments[0];// 将url的值赋给proxy.url
        this.proxy.textField = arguments[1];// 设置后台的数据的哪个字段作为树形菜单文本显示
    },
    parentIdProperty: 'parentId'
});

//用于定义班级管理左边菜单的基类的panel
Ext.define('classesLeftTreePanel', {
    extend: 'Ext.tree.Panel',
    header: false,
    alias: 'tree',
    layout: 'fit',
    rootVisible: false,
    useArrows: true,// 是否用箭头
    // singleExpand: true,//是否一次只展开树中的一个节点，默认
    dockedItems: [{
        xtype: 'toolbar',
        items: [{
            itemId: 'rootAddButton',
            icon: 'static/images/icons/fam/add.gif',
            listeners: {
                click: function () {
                    this.up('treepanel').addClick(this.up('treepanel'));
                }
            }
        }, '-', {
            itemId: 'rootDeleteButton',
            icon: 'static/images/icons/fam/delete.gif',
            listeners: {
                click: function () {
                    this.up('treepanel').deleteClick(this.up('treepanel'));
                }
            }
        }]
    }],
    listeners: {
        beforeitemexpand: function (node, eOpts) {
            if (node.data.id != 'root')
                classesLeftTreeGetChildren(node, this);
        },
        itemclick: function (view, record, item, index, e, eOpts) {
            console.log(record);
            this.itemClick(record, this);
        },
        itemmouseenter: function (view, record, item, index, e, eOpts) {
            var depth = record.getDepth();
            if (depth == 1)
                item.setAttribute('data-qtip', '班级节点');
            else if (depth == 2)
                item.setAttribute('data-qtip', '组节点');
            else if (depth == 3)
                item.setAttribute('data-qtip', '项目节点');
            else if (depth == 4) {
                if (!record.get('leaf'))
                    item.setAttribute('data-qtip', '分类节点');
                else
                    item.setAttribute('data-qtip', record.get('text'));
            } else if (depth > 4) {
                if (record.data.status == 0)
                    item.setAttribute('data-qtip', '测试需求节点');
                else if (record.data.status == 1)
                    item.setAttribute('data-qtip', '测试计划节点');
                else if (record.data.status == 2)
                    item.setAttribute('data-qtip', '测试执行节点');
                else if (record.data.status == 3)
                    item.setAttribute('data-qtip', '测试报告节点');
            }
        }
    },
    constructor: function () {
        this.callParent(arguments); // 调用父类的构造函数,不然会报错
        this.setStore(arguments[0]);// 设置树的store
        this.depth2ChildrenUrl = arguments[1];// 获取第二层儿子节点的Url(组)
        this.depth3ChildrenUrl = arguments[2];// 获取第三层儿子节点的Url(项目)
        this.depth4ChildrenUrl = arguments[3];// 获取第四层儿子节点的Url(文件夹)
        this.depth5ChildrenUrl = arguments[4];// 获取第五层儿子节点的Url(根节点)
        this.depth6ChildrenUrl = arguments[5];// 获取第六层及以后儿子节点的Url(item节点)
        //--------------------------------------------------------------------------//
        this.depth2ClickUrl = arguments[6];// 点击第一层节点的Url(班级信息)
        this.depth3ClickUrl = arguments[7];// 点击第二层节点的Url(组信息)
        this.depth4ClickUrl = arguments[8];// 点击第三层节点的Url(项目信息)
        this.analysisClickUrl = arguments[9];// 点击项目下测试分析节点的Url
        this.bugClickUrl = arguments[10];// 点击项目下测试分析节点的Url
        this.reqCopyClickUrl = arguments[11];// 点击(测试需求副本节点信息Url)
        this.designCopyClickUrl = arguments[12];// 点击(测试计划副本节点信息Url)
        this.runCopyClickUrl = arguments[13];// 点击(测试执行副本节点信息Url)
        this.itemClick = arguments[14];//点击树节点之后的操作
        this.addClick = arguments[15];//点击添加按钮之后的操作
        this.deleteClick = arguments[16];//点击删除按钮之后的操作
        this.down('#rootAddButton').setText(arguments[17]);//添加按钮的文本
        this.down('#rootDeleteButton').setText(arguments[18]);//删除按钮的文本
        this.pattern = arguments[19];//设置这颗树是老师的树还是主任的树（老师0，主任1）
    }
});